A server cluster is a group of networked servers that work cooperatively to provide services to clients. A server cluster can provide a data repository that can be efficiently accessible to a client. The data repository can be formed by each server maintaining a local cache for storing data. Data availability can be improved by replication of cached data among the servers. When a data entry is added to any of the caches, the data entry will be replicated to all other caches in the cluster and can be retrieved locally from any cache. Data replication provides a quick and easy way to share data across a cluster. Generally, replication performs well only in small clusters (e.g., under 10 servers). Replication does not scale well in a large cluster due to the large number of replication messages that need to be sent among the servers.
Data distribution usually works better in a large cluster than replication. A distributed data repository is formed by each server maintaining a local cache. Rather than replicating a data entry to all of the servers, a data entry is distributed to one or a subset of the servers in a cluster. Generally, distribution scales linearly as more servers are added to the cluster. As a data entry is stored in only one or some of the servers, the technique for locating a data entry in a distributed data repository can have a significant impact on the system performance.